﻿/**
 * Proyecto: Cognitum
 * Global IT Services 2008
 * @author Mislas
 */

Cognitum.Cobranza.ComplementoConciliacion.Editor = Ext.extend(Karma.EBCard, {
    initComponent: function(){
        Ext.apply(this, {
            sections: [{
                title: 'Datos generales',
                items: [{
                    fieldLabel: 'Conciliacion',
                    name: 'Conciliacion',
                    entityName: 'Conciliaciones',
                    disabled: true,
                    xtype: 'entity.link'
                }, {
                    fieldLabel: 'Complemento',
                    name: 'Complemento',
                    entityName: 'ComplementosConciliaciones',
                    disabled: true,
                    xtype: 'entity.link'
                }, {
                    fieldLabel: 'Total comision pendiente',
                    xtype: 'numberfield',
                    name: 'TotalComisionPendiente',
                    disabled: true
                }, {
                    fieldLabel: 'Total comision pagada',
                    xtype: 'numberfield',
                    name: 'TotalComisionPagada'
                },
                {
                    fieldLabel: 'Observaciones',
                    name: 'Observaciones',
                    xtype: 'textarea',
                    allowBlank: true,
                    disabled: false
                }]
            }, {
                xtype: 'aud.editor',
                title: 'Info registro'
            }]
        });
        Cognitum.Cobranza.ComplementoConciliacion.Editor.superclass.initComponent.apply(this, arguments);
    },
    validateValue: function(value){
        return true;
    },
    getTBarCustomControls: function(){
        return [this.aplicarBtn = new Ext.Button({
            xtype: 'button',
            formBind: true,
            text: 'Aplicar',
            handler: this.onAplicar,
            scope: this
        }), this.cancelarBtn = new Ext.Button({
            xtype: 'button',
            formBind: true,
            text: 'Cancelar',
            handler: this.onCancelar,
            scope: this
        })];
    },
    updateControls: function(value){
        Cognitum.Cobranza.ComplementoConciliacion.Editor.superclass.updateControls.apply(this, arguments);
        this.aplicarBtn.setDisabled(!this.puedeAplicar(value));
        this.cancelarBtn.setDisabled(!this.puedeCancelar(value));
    },
    puedeAplicar: function(value){
        if (!this.entity.security.has('Aplicar')) {
            return false;
        }
        return (!this.isNew) && value.Estatus == 0;
    },
    puedeCancelar: function(value){
        if (!this.entity.security.has('Cancelar')) {
            return false;
        }
        return (!this.isNew) && value.Estatus == 0;
    },
    onAplicar: function(){
		var comision = this.getForm().findField('TotalComisionPendiente').getValue();
		var comisionPagada = this.getForm().findField('TotalComisionPagada').getValue();
		if (comisionPagada < comision) {
	        Ext.Msg.show({
	            title: 'Aviso',
	            msg: 'La comision pagada es menor del total de la comision pendiente, desea generar un complemento?',
	            buttons: Ext.Msg.YESNO,
	            fn: function(result){
	                if (result === 'yes') {
						Ext.Msg.prompt('Observaciones', 'Observaciones:', function(btn, obs){
		                    var id = this.getForm().findField('Id').getValue();
							var params;
						    if (btn == 'ok'){
								params = [id, true, obs];
						    } 
							if (result === 'cancel') {
								params = [id, true];
							}
		                    this.doOperationWithParams('DoAplica', params, {
		                        fn: function(Conciliacion){
		                            this.status.setStatus({
		                                text: 'El complemento fue aplicado existosamente.',
		                                iconCls: 'ok-icon',
		                                clear: true
		                            });
		                            this.updateControls(Conciliacion);
		                            Ext.MessageBox.alert('Exito', 'La operacion de Aplicacion se realizo con exito.');
		                        },
		                        scope: this
		                    });
						}, this);
	                }
	                if (result === 'no') {
	                    var id = this.getForm().findField('Id').getValue();
	                    this.doOperationWithParams('DoAplica', [id, false], {
	                        fn: function(Conciliacion){
	                            this.status.setStatus({
	                                text: 'El complemento fue aplicado existosamente.',
	                                iconCls: 'ok-icon',
	                                clear: true
	                            });
	                            this.updateControls(Conciliacion);
	                            Ext.MessageBox.alert('Exito', 'La operacion de Aplicacion se realizo con exito.');
	                        },
	                        scope: this
	                    });
	                }
	            },
	            icon: Ext.MessageBox.QUESTION,
	            scope: this
	        });
		}
		else {
	        Ext.Msg.show({
	            title: 'Aplicacion',
	            msg: 'Esta apunto de realizar una Aplicacion',
	            buttons: Ext.Msg.YESNO,
	            fn: function(result){
	                if (result === 'yes') {
	                    var id = this.getForm().findField('Id').getValue();
	                    this.doOperationWithParams('DoAplica', id, {
	                        fn: function(Conciliacion){
	                            this.status.setStatus({
	                                text: 'El complemento fue aplicado existosamente.',
	                                iconCls: 'ok-icon',
	                                clear: true
	                            });
	                            this.updateControls(Conciliacion);
	                            Ext.MessageBox.alert('Exito', 'La operacion de Aplicacion se realizo con exito.');
	                        },
	                        scope: this
	                    });
	                }
	            },
	            icon: Ext.MessageBox.QUESTION,
	            scope: this
	        });
		}
    },
    onCancelar: function(){
        Ext.Msg.show({
            title: 'Cancelación',
            msg: 'Esta apunto de realizar una Cancelación',
            buttons: Ext.Msg.YESNO,
            fn: function(result){
                if (result === 'yes') {
                    var ComplementoConciliacion = this.getForm().getFieldValues();
                    this.doOperationWithParams('DoCancela', ComplementoConciliacion, {
                        fn: function(ComplementoConciliacion){
                            this.status.setStatus({
                                text: 'El complemento fue cancelado existosamente.',
                                iconCls: 'ok-icon',
                                clear: true
                            });
                            this.updateControls(ComplementoConciliacion);
                            Ext.MessageBox.alert('Exito', 'La operacion de Cancelacion se realizo con exito.');
                        },
                        scope: this
                    });
                }
            },
            icon: Ext.MessageBox.QUESTION,
            scope: this
        });
    }
});
Ext.reg('comconc.editor', Cognitum.Cobranza.ComplementoConciliacion.Editor);
